home *** CD-ROM | disk | FTP | other *** search
- /* QuickLaunch */
-
- MODULE 'intuition/intuition'
-
- CONST MAXLAUNCH=12
- CONST MAXGADGETS=MAXLAUNCH*GADGETSIZE
- CONST IDCMPF=IDCMP_CLOSEWINDOW+IDCMP_GADGETUP
-
- DEF window,nrgad=0,next,gl[MAXGADGETS]:ARRAY,outf=TRUE,class
-
- PROC main()
- next:=Gadget(gl,NIL,1,3,10,14,100,'Output')
- next:=Gadget(next,gl,2,0,120,14,100,'About')
- IF readfile()=FALSE
- WriteF('Could not read config file correctly!\n')
- ELSE
- window:=OpenW(205,16,230,nrgad*14+48,IDCMPF,$100E,'QuickLaunch',0,1,gl)
- IF window=NIL
- WriteF('Could not open window!\n')
- ELSE
- Colour(2,0)
- TextF(10,37,'Ready for takeoff ... ')
- REPEAT
- class:=WaitIMessage(window)
- IF class=IDCMP_GADGETUP THEN dogadgets()
- UNTIL class=IDCMP_CLOSEWINDOW
- CloseW(window)
- ENDIF
- ENDIF
- ENDPROC
-
- PROC readfile()
- DEF len,a,adr,buf,handle,name,flen=TRUE
- name:='S:QuickLaunch.Config'
- IF (flen:=FileLength(name))=-1 THEN RETURN
- IF (buf:=New(flen+1))=NIL THEN RETURN
- IF (handle:=Open(name,1005))=NIL THEN RETURN
- len:=Read(handle,buf,flen)
- Close(handle)
- IF len<1 THEN RETURN
- adr:=buf
- FOR a:=0 TO len-1
- IF buf[a]=10
- buf[a]:=0
- IF adr=0
- adr:=buf+a+1
- ELSE /* id=pathadr */
- IF nrgad++=MAXLAUNCH THEN RETURN
- next:=Gadget(next,gl,buf+a+1,0,10,nrgad*14+30,210,adr)
- adr:=0
- ENDIF
- ENDIF
- ENDFOR
- ENDPROC TRUE
-
- PROC dogadgets()
- DEF gadget,object:PTR TO gadget
- object:=MsgIaddr()
- gadget:=object.userdata
- IF gadget=1
- outf:=Not(outf)
- ELSEIF gadget=2
- TextF(10,37,'Written in Amiga E by $#%!')
- ELSE
- IF outf THEN WriteF('') /* force window if stdout=0 */
- TextF(10,37,'Launching ... \l\s[12]',gadget)
- Execute(gadget,0,stdout)
- TextF(10,37,'Done. ')
- ENDIF
- ENDPROC
-